/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.edu.fatec.ads.classes;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.hibernate.annotations.DiscriminatorFormula;

/**
 *
 * @author Bruno Moura
 */
@Entity
@Table(name="Pessoa_Complemento")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula(value="tp_complemento")
public abstract class PessoaComplemento extends AbstractTO{

    private PessoaComplementoPK complementoPK;
    private Date dataInicio;

    public PessoaComplemento() {
        complementoPK = new PessoaComplementoPK();
    }

    public PessoaComplemento(String discriminador){
        complementoPK = new PessoaComplementoPK(discriminador);
    }

    /**
     * @return the complementoPK
     */
    @EmbeddedId
    public PessoaComplementoPK getComplementoPK() {
        return complementoPK;
    }

    /**
     * @param complementoPK the complementoPK to set
     */
    public void setComplementoPK(PessoaComplementoPK complementoPK) {
        this.complementoPK = complementoPK;
    }

    /**
     * @return the dataInicio
     */
    @Temporal(TemporalType.DATE)
    @Column(name="dt_inicio", nullable=false)
    public Date getDataInicio() {
        return dataInicio;
    }

    /**
     * @param dataInicio the dataInicio to set
     */
    public void setDataInicio(Date dataInicio) {
        this.dataInicio = dataInicio;
    }

    @Override
    @Transient
    public Serializable getPK() {
        return this.getComplementoPK();
    }

    public void setPK(Serializable identifier){
        this.setComplementoPK((PessoaComplementoPK) identifier);
    }

    @Transient
    public Pessoa getPessoa(){
        return this.getComplementoPK().getPessoa();
    }

    public void setPessoa(Pessoa pessoa){
        this.getComplementoPK().setPessoa(pessoa);
    }

    @Override
    public String toString() {
        return "PessoaComplemento[pessoa=" + this.getPessoa().getCodigo()
                + ", dataInicio=" + this.getDataInicio() + "]";
    }
   
}